A flash memory device is a type of electrically erasable programmable read-only memory (EEPROM) and is used for non-volatile storage of data. Flash memory is being increasingly used to store execution codes and data in portable electronic products, such as computer systems.
A typical flash memory comprises a memory array having rows and columns of memory cells. Each of the memory cells is fabricated as a field-effect transistor having a control gate and a floating gate. The floating gate is capable of holding a charge and is separated by a thin oxide layer from source and drain regions contained in a substrate. Each of the memory cells can be electrically programmed (charged) by injecting electrons from the drain region through the oxide layer onto the floating gate. The charge can be removed from the floating gate by tunneling the electrons to the source through the oxide layer during an erase operation. Thus, the data in a memory cell is determined by the presence or absence of a charge on the floating gate.
NOR and NAND flash memory devices are two common types of flash memory devices, so called for the logical form the basic memory cell configuration in which each is arranged. Typically, for NOR flash memory devices, the control gate of each memory cell of a row of the array is connected to a word-select line, and the drain region of each memory cell of a column of the array is connected to a bit line. The memory array for NOR flash memory devices is accessed by a row decoder activating a row of floating gate memory cells by selecting the word-select line coupled to their gates. The row of selected memory cells then place their data values on the column bit lines by flowing a differing current if in a programmed state or not programmed state from a coupled source line to the coupled column bit lines.
The array of memory cells for NAND flash memory devices is also arranged such that the control gate of each memory cell of a row of the array is connected to a word-select line. However, each memory cell is not directly coupled to a column bit line by its drain region. Instead, the memory cells of the array are arranged together in strings, typically of 16 each, with the memory cells coupled together in series, source to drain, between a source line and a column bit line. The memory array for NAND flash memory devices is then accessed by a row decoder activating a row of memory cells by selecting the word-select line coupled to a control gate of a memory cell. In addition, the word-select lines coupled to the control gates of unselected memory cells of each string are driven to operate the unselected memory cells of each string as pass transistors, so that they pass current in a manner that is unrestricted by their stored data values. Current then flows from the source line to the column bit line through each series coupled string, restricted only by the selected memory cells of each string. This places the current-encoded data values of the row of selected memory cells on the column bit lines.
Many NAND flash memory devices provide two sets of registers (or latches) for use during program operations. These are usually referred to as cache latches and program latches. During programming operations, data are transferred from a host, such as a processor of a portable electronic product, into the cache latches. The data are then transferred from the cache latches into the program latches prior to the actual programming of a row of memory cells (commonly referred to as a page). This frees up the cache latches for additional data transfer from the host, while programming of the current data continues using the program latches in what is referred to as cache program operation.
In the event of a program failure, data transfer from the cache to program latches continues and the programming of this data in its specified location (or page) is still performed so that program data no longer remains within the flash device after a program operation has failed. A RAM buffer is often located externally to the flash device to retain the program data in case of failure. This data can be sent again to the flash device for programming in a new location (or page) as part of a recovery to ensure storage of the data.
The buffer size required for storing program data in case of failures is dictated by the page size of the flash memory. Therefore, as page size increases, e.g., due to increasing memory requirements, buffer size and thus buffer cost will increase.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for alternatives to using buffers for storing program data in case of failures.